/**
 * 路由守卫工具
 */
import { isLoggedIn } from './auth.js'

// 需要登录的页面列表
const AUTH_REQUIRED_PAGES = [
  '/pages/greenhouse/greenhouse',
  '/pages/my/my',
  '/pages/weather/weather'
]

// 公开页面列表（不需要登录）
const PUBLIC_PAGES = [
  '/pages/login/login',
  '/pages/index/index'
]

/**
 * 检查页面是否需要登录
 * @param {string} path 页面路径
 * @returns {boolean} 是否需要登录
 */
export const isAuthRequired = (path) => {
  return AUTH_REQUIRED_PAGES.some(page => path.includes(page))
}

/**
 * 检查页面是否为公开页面
 * @param {string} path 页面路径
 * @returns {boolean} 是否为公开页面
 */
export const isPublicPage = (path) => {
  return PUBLIC_PAGES.some(page => path.includes(page))
}

/**
 * 路由守卫检查
 * @param {string} path 要跳转的页面路径
 * @returns {boolean} 是否允许跳转
 */
export const routeGuard = (path) => {
  // 如果是公开页面，直接允许访问
  if (isPublicPage(path)) {
    return true
  }

  // 如果需要登录但用户未登录，跳转到登录页
  if (isAuthRequired(path) && !isLoggedIn()) {
    uni.reLaunch({
      url: '/pages/login/login'
    })
    return false
  }

  return true
}

/**
 * 自动跳转到合适的页面
 * 用于应用启动时的页面选择
 */
export const autoNavigate = () => {
  // 获取当前页面路径
  const pages = uni.getCurrentPages()
  const currentPage = pages[pages.length - 1]
  const currentRoute = currentPage ? currentPage.route : ''

  if (isLoggedIn()) {
    // 已登录，如果不在主页则跳转到主页
    if (!currentRoute.includes('/pages/weather/weather')) {
      uni.switchTab({
        url: '/pages/weather/weather'
      })
    }
  } else {
    // 未登录，只有在不是登录页时才跳转到登录页
    if (!currentRoute.includes('/pages/login/login')) {
      uni.reLaunch({
        url: '/pages/login/login'
      })
    }
  }
}
